<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Docente extends MN_Controller {

    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->helper(array('url', 'form'));
        $this->load->library('ion_auth');
        $this->load->library('session');
        $this->load->model('Persona_Model');
        $this->load->model('docente_model');
        $this->load->model('calificacion_model');
        $this->load->model('ciclos_model');
        $this->load->library('utilidades');
    }

    public function index() {

        if (!$this->ion_auth->logged_in()) {
            //redirect them to the login page
            redirect('auth/login', 'refresh');
        } elseif (!$this->ion_auth->is_admin()) {
            //redirect them to the home page because they must be an administrator to view this
            $this->_render('docente/inicio');
        } else {
            //set the flash data error message if there is one
            $this->_render('home/inicio');
        }
    }

    /*
     * SELECT
      `persona`.`nombre_pers`
      , `persona`.`apellido_pers`
      , `persona`.`fono_pers`
      , `persona`.`username_pers`
      , `persona`.`email_inst_pers`
      , `persona`.`ide_pers`
      FROM
      `acad`.`persona`
      INNER JOIN `acad`.`docente`
      ON (`persona`.`ide_pers` = `docente`.`persona_ide_pers`)
      WHERE `persona`.`ide_pers` NOT IN(SELECT
      `persona`.`ide_pers`
      FROM
      `acad`.`persona`
      INNER JOIN `acad`.`users`
      ON (`persona`.`ide_pers` = `users`.`ide_pers`));
     */

    public function inicio() {
        if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_teacher()) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');

            redirect('auth/login', 'refresh');
        }

        //$this->data['docentes'] = $this->Docente_Model->getListado();
        $this->data['user'] = $this->ion_auth->get_user_username();
        $this->data['id_persona'] = $this->ion_auth->get_user_idepers();
        $_SESSION["docente_id"] = $this->data['id_persona'];
        if (isset($_SESSION["menu"]) == false) {

            $_SESSION["menu"] = $this->utilidades->listaMaterias($this->data['id_persona']);
        }
        $this->data["docente"] = $this->docente_model->getDatosDocente($this->data['id_persona']);

        $this->_render('docentes/frm_inicio');
        //print_r($this->session->userdata);
    }

    public function crear() {
        $this->load->library('form_validation');
        $this->_render('docentes/new');
    }

    public function actualizar() {
        $this->load->helper(array('url', 'form'));
        $this->load->library('form_validation');

        $opc = $this->uri->segment(3);
        $ide_pers = $this->uri->segment(4);
        if (!isset($_POST['cedula_pers'])) {
            $this->data['docente'] = $this->Docente_Model->getDatosDocente($ide_pers);
            $this->data['opc'] = $opc;
            $this->_render('docentes/update');
        } else {
            $ide_pers = $this->input->post('persona_ide_pers');
            $opc = $this->input->post('txtopc');
            //$this->data['docente'] = $this->Docente_Model->getDatosDocente($ide_pers);
            $this->data['opc'] = $opc;

            $this->form_validation->set_rules('cedula_pers', 'NUMERO DE CEDULA', 'trim|integer|required');
            $this->form_validation->set_rules('nombre_pers', 'NOMBRES', 'required|trim');
            $this->form_validation->set_rules('apellido_pers', 'APELLIDOS', 'required|trim');
            $this->form_validation->set_rules('nacionalidad_pers', 'NACIONALIDAD', 'required|trim');
            $this->form_validation->set_rules('provincia_pers', 'PROVINCIA', 'required|trim');
            $this->form_validation->set_rules('ciudad_pers', 'CIUDAD', 'required|trim');
            $this->form_validation->set_rules('direccion_pers', 'DIRECCION', 'required|trim');
            $this->form_validation->set_rules('email_inst_pers', 'Email personal requerido', 'required|trim|valid_email');

            if (($this->form_validation->run() == FALSE)) {
                $this->data['docente'] = $this->Docente_Model->getDatosDocente($ide_pers);

                $this->data['opc'] = $opc;

                $this->_render('docentes/update');
            } else {

                $error_fatal = 0;

                if (!empty($_FILES['foto_pers']['name'])) {
                    $config['upload_path'] = './commons/personas/';
                    $config['allowed_types'] = 'gif|jpg|png|jpeg';
                    $config['max_size'] = '3000';
                    $config['max_width'] = '1024';
                    $config['max_height'] = '768';

                    $this->load->library('upload', $config);

                    if (!$this->upload->do_upload('foto_pers')) {
                        $this->data['msj_error'] = $this->upload->display_errors();
                        $upload_data = null;
                        $error_fatal = 0;
                    } else {
                        $upload_data = $this->upload->data();
                        $error_fatal = 1;
                    }
                } else {
                    $error_fatal = 2;
                }
                switch ($error_fatal) {

                    case 0:
                        $this->_render('docentes/update');
                        break;
                    case 1:
                    case 2:
                        $persona = array(
                            "cedula_pers" => $this->input->post('cedula_pers'),
                            "tipo_doc_pers" => $this->input->post('tipo_doc_pers'),
                            "nombre_pers" => $this->input->post('nombre_pers'),
                            "apellido_pers" => $this->input->post('apellido_pers'),
                            "nacionalidad_pers" => $this->input->post('nacionalidad_pers'),
                            "provincia_pers" => $this->input->post('provincia_pers'),
                            "ciudad_pers" => $this->input->post('ciudad_pers'),
                            "direccion_pers" => $this->input->post('direccion_pers'),
                            "refer_domic_pers" => $this->input->post('refer_domic_pers'),
                            "sexo_pers" => $this->input->post('sexo_pers'),
                            "estado_civil_pers" => $this->input->post('estado_civil_pers'),
                            "fecha_nac_pers" => date("Y-m-d", strtotime($this->input->post('fecha_nac_pers'))),
                            "fono_pers" => $this->input->post('fono_pers'),
                            "celular_pers" => $this->input->post('celular_pers'),
                            "email_inst_pers" => $this->input->post('email_inst_pers'),
                            "foto_pers" => ($error_fatal == 1 ? base_url() . "commons/personas/" . $_FILES['foto_pers']['name'] : $this->input->post('foto_pers')),
                        );

                        //$persona_ide_pers=1;
                        $docente = array(
                            "cat_escalofon_doc" => $this->input->post('cat_escalofon_doc'),
                            "tipo_contrato_doc" => $this->input->post('tipo_contrato_doc'),
                            "concurso_doc" => $this->input->post('concurso_doc'),
                            "dedicacion_doc" => $this->input->post('dedicacion_doc'),
                            "cursa_estudios_doc" => $this->input->post('cursa_estudios_doc'),
                            "fecha_ingreso1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingreso1_doc'))),
                            "fecha_salida1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida1_doc'))),
                            "fechaingeso2_doc" => date("Y-m-d", strtotime($this->input->post('fechaingeso2_doc'))),
                            "fecha_salida2_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida2_doc'))),
                            "fecha_ingeso3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingeso3_doc'))),
                            "fecha_salida3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida3_doc'))),
                            "activo_doc" => $this->input->post('activo_doc'));


                        if ($opc == 'upd') {
                            $this->Persona_Model->actualizarPersona($persona, $ide_pers);
                            $this->Docente_Model->actualizarDocente($docente, $ide_pers);
                        } else {
                            $this->Docente_Model->eliminarDocente($ide_pers);
                        }




                        break;
                }
                redirect('docente/inicio');
            }
        }
    }

    function presearch() {
        $who = $this->input->post('txtsearch');

        if (empty($who))
            redirect("docente/inicio");
        else {
            // echo $who." busqueda";

            $this->data['docentes'] = $this->Docente_Model->getBusquedaDocente($who, $this->input->post('tipo_busqueda'));
            //$this->data['docentes'] = $this->Docente_Model->getListado();
            $this->_render('docentes/start');
        }
    }

    public function ingresodatos() {

        $this->load->library('form_validation');

        $this->form_validation->set_rules('cedula_pers', 'NUMERO DE CEDULA', 'trim|integer|required');
        $this->form_validation->set_rules('nombre_pers', 'NOMBRES', 'required|trim');
        $this->form_validation->set_rules('apellido_pers', 'APELLIDOS', 'required|trim');
        $this->form_validation->set_rules('nacionalidad_pers', 'NACIONALIDAD', 'required|trim');
        $this->form_validation->set_rules('provincia_pers', 'PROVINCIA', 'required|trim');
        $this->form_validation->set_rules('ciudad_pers', 'CIUDAD', 'required|trim');
        $this->form_validation->set_rules('direccion_pers', 'DIRECCION', 'required|trim');
        $this->form_validation->set_rules('email_inst_pers', 'Email personal requerido', 'required|trim|valid_email');


        if (($this->form_validation->run() == FALSE)) {
            //echo "algun error";
            $this->_render('docentes/new');
        } else {
            $username = substr($this->input->post('nombre_pers'), 0, strpos($this->input->post('nombre_pers'), " ") - 1)
                    . substr($this->input->post('apellido_pers'), 0, 1)
                    . substr(md5(microtime()), 1, 3);

            //$v=!empty($this->input->post('foto_pers'));
            //if (isset($_FILES['image']) && !empty($_FILES['image']['name']))

            $error_fatal = 0;

            if (!empty($_FILES['foto_pers']['name'])) {
                $config['upload_path'] = './commons/personas/';
                $config['allowed_types'] = 'gif|jpg|png|jpeg';
                $config['max_size'] = '3000';
                $config['max_width'] = '1024';
                $config['max_height'] = '768';

                $this->load->library('upload', $config);

                if (!$this->upload->do_upload('foto_pers')) {
                    $this->data['msj_error'] = $this->upload->display_errors();
                    $upload_data = null;
                    $error_fatal = 0;
                } else {
                    $upload_data = $this->upload->data();
                    $error_fatal = 1;
                }
            } else {
                $error_fatal = 2;
            }
            switch ($error_fatal) {

                case 0:
                    $this->_render('docentes/new');
                    break;
                case 1:
                case 2:
                    $persona = array(
                        "cedula_pers" => $this->input->post('cedula_pers'),
                        "tipo_doc_pers" => $this->input->post('tipo_doc_pers'),
                        "nombre_pers" => $this->input->post('nombre_pers'),
                        "apellido_pers" => $this->input->post('apellido_pers'),
                        "nacionalidad_pers" => $this->input->post('nacionalidad_pers'),
                        "provincia_pers" => $this->input->post('provincia_pers'),
                        "ciudad_pers" => $this->input->post('ciudad_pers'),
                        "direccion_pers" => $this->input->post('direccion_pers'),
                        "refer_domic_pers" => $this->input->post('refer_domic_pers'),
                        "sexo_pers" => $this->input->post('sexo_pers'),
                        "estado_civil_pers" => $this->input->post('estado_civil_pers'),
                        "fecha_nac_pers" => date("Y-m-d", strtotime($this->input->post('fecha_nac_pers'))),
                        "fono_pers" => $this->input->post('fono_pers'),
                        "celular_pers" => $this->input->post('celular_pers'),
                        "email_inst_pers" => $this->input->post('email_inst_pers'),
                        "foto_pers" => ($error_fatal == 1 ? base_url() . "commons/personas/" . $_FILES['foto_pers']['name'] : base_url() . "commons/personas/foto.jpg"),
                        "username_pers" => $username);

                    //$persona_ide_pers=1;
                    $persona_ide_pers = $this->Persona_Model->grabarPersona($persona);
                    $docente = array(
                        "persona_ide_pers" => $persona_ide_pers,
                        "cat_escalofon_doc" => $this->input->post('cat_escalofon_doc'),
                        "tipo_contrato_doc" => $this->input->post('tipo_contrato_doc'),
                        "concurso_doc" => $this->input->post('concurso_doc'),
                        "dedicacion_doc" => $this->input->post('dedicacion_doc'),
                        "cursa_estudios_doc" => $this->input->post('cursa_estudios_doc'),
                        "fecha_ingreso1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingreso1_doc'))),
                        "fecha_salida1_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida1_doc'))),
                        "fechaingeso2_doc" => date("Y-m-d", strtotime($this->input->post('fechaingeso2_doc'))),
                        "fecha_salida2_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida2_doc'))),
                        "fecha_ingeso3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_ingeso3_doc'))),
                        "fecha_salida3_doc" => date("Y-m-d", strtotime($this->input->post('fecha_salida3_doc'))),
                        "activo_doc" => $this->input->post('activo_doc'));

                    $this->Docente_Model->grabarDocente($docente);
                    redirect('docente/inicio');


                    break;
            }
        }
    }

    /**
     * Carga y visualiza los estudiantes que le pertenecen al docente
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function verListaAlumno($periodo, $materia, $seccion, $paralelo) {
        if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_teacher()) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');

            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        $this->data['id_persona'] = $this->ion_auth->get_user_idepers();
        $_SESSION["docente_id"] = $this->data['id_persona'];
        if (isset($_SESSION["menu"]) == false) {

            $_SESSION["menu"] = $this->utilidades->listaMaterias($this->data['id_persona']);
        }
        $this->data["link"] = "/" . $periodo . "/" . $materia . "/" . $seccion . "/" . $paralelo;
        $this->data["periodo"] = $this->calificacion_model->obtenerPeriodo($periodo);
        $materia1 = $this->calificacion_model->obtenerMateria($materia);
        $this->data["materia"] = $materia1[0]["nombre_mat"];
        $this->data["paralelo"] = $paralelo;
        $this->data["carrera"] = $materia1[0]["nombre_car"];
        $this->data["ciclo"] = $materia1[0]["nombre_cic"];
        $seccionAux = $this->utilidades->secciones($seccion);
        $this->data["seccion"] = $seccionAux["nombre"];

        $listaCal = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $listaArrastreCal = $this->docente_model->cargarEstudiantesCalificacionesArrastre($periodo, $materia, $seccion, $paralelo);
        $listaCalificaciones = $this->utilidades->crearListaEstudiantes($listaCal, $listaArrastreCal);
        $this->data["listaEstudiante"] = $listaCalificaciones;
        $this->data["verSupletarios"] = $this->verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        //$this->data["listaEstudiante"] = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $this->data["listaEstudianteSupletorios"] = $this->listaSupletorios($periodo, $materia, $seccion, $paralelo);
        $this->data["listaResumen"] = $this->listaResumen($periodo, $materia, $seccion, $paralelo);
        $this->data["listaFinal"] = $this->listaFinal($periodo, $materia, $seccion, $paralelo);
        $this->_render('docentes/frm_listaEstudiantes');
    }

    /**
     * Crea la lista de estudiantes para notas
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function crearListaAlumno($periodo, $materia, $seccion, $paralelo) {
        if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_teacher()) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');

            redirect('auth/login', 'refresh');
        }
        $lista = $this->docente_model->cargarEstudiantes($periodo, $materia, $seccion, $paralelo);

        foreach ($lista as $item) {
            $data = array("cursa_ide_cur" => $item["ide_cur"]);
            $this->calificacion_model->crearCalificaciones($data);
        }
        $listaArrastre = $this->docente_model->cargarEstudianteArrastre($periodo, $materia, $seccion, $paralelo);
        foreach ($listaArrastre as $item) {
            $data = array("cursa_ide_cur" => $item["ide_cur"]);
            $this->calificacion_model->crearCalificaciones($data);
        }
        redirect('docente/verListaAlumno/' . $periodo . "/" . $materia . "/" . $seccion . "/" . $paralelo);
    }

    public function guardarCalificaciones($periodo, $materia, $seccion, $paralelo, $bimestre) {
        //$listado = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $listaCal = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $listaArrastreCal = $this->docente_model->cargarEstudiantesCalificacionesArrastre($periodo, $materia, $seccion, $paralelo);
        $listado = $this->utilidades->crearListaEstudiantes($listaCal, $listaArrastreCal);
        $fechaE = new DateTime();
        $fecha = $fechaE->format("Y-m-d");
        foreach ($listado as $item) {
            if ($bimestre == 1) {
                $data = array("evacont1_cal" => $_POST[$item['ide_cal'] . '_ec1'],
                    "exam1_cal" => $_POST[$item['ide_cal'] . '_eb1'],
                    "asiste1_cal" => $_POST[$item['ide_cal'] . '_as1'],
                    "fecha_exa1" => $fecha,
                    "obs1_cal" => $_POST[$item['ide_cal'] . '_ob1'],
                    "total1" => $_POST[$item['ide_cal'] . '_to1'],
                    "ingnot1" => ($item['ingnot1'] + 1));
                $this->calificacion_model->actualizarCalificaciones($data, $item["ide_cal"]);
                //actualizarCalificaciones
            } else if ($bimestre == 2) {
                $data = array("evacont2_cal" => $_POST[$item['ide_cal'] . '_ec2'],
                    "exam2_cal" => $_POST[$item['ide_cal'] . '_eb2'],
                    "asiste2_cal" => $_POST[$item['ide_cal'] . '_as2'],
                    "fecha_ex2" => $fecha,
                    "obs2_cal" => $_POST[$item['ide_cal'] . '_ob2'],
                    "total2" => $_POST[$item['ide_cal'] . '_to2'],
                    "ingnot2" => ($item['ingnot2'] + 1));
                $this->calificacion_model->actualizarCalificaciones($data, $item["ide_cal"]);
            }
        }
        $this->session->set_flashdata('exito', "Se ha registrado las notas correctamente");
        redirect('docente/verListaAlumno/' . $periodo . "/" . $materia . "/" . $seccion . "/" . $paralelo);
    }

    public function guardarSupletorios($periodo, $materia, $seccion, $paralelo, $bimestre) {
        $listado = $this->listaSupletorios($periodo, $materia, $seccion, $paralelo);
        $fechaE = new DateTime();
        $fecha = $fechaE->format("Y-m-d");
        foreach ($listado as $item) {

            $data = array("suple_cal" => $_POST[$item['ide_cal'] . '_sup'],
                "fecha_sup" => $fecha,
                "obs3_cal" => $_POST[$item['ide_cal'] . '_ob3']
            );
            $this->calificacion_model->actualizarCalificaciones($data, $item["ide_cal"]);
            //actualizarCalificaciones
        }
        $this->session->set_flashdata('exito', "Se ha registrado supletorios correctamente");
        redirect('docente/verListaAlumno/' . $periodo . "/" . $materia . "/" . $seccion . "/" . $paralelo);
    }

    public function volveCrearListaAlumno($periodo, $materia, $seccion, $paralelo) {
        $lista = $this->docente_model->cargarEstudiantes($periodo, $materia, $seccion, $paralelo);
        $listaCal = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $listaArrastreCal = $this->docente_model->cargarEstudiantesCalificacionesArrastre($periodo, $materia, $seccion, $paralelo);
        $listaCalificaciones = $this->utilidades->crearListaEstudiantes($listaCal, $listaArrastreCal);
        $listaAux = array();
        foreach ($lista as $item) {
            if ($this->revisarEstudiante($item["ide_est"], $listaCalificaciones) == false) {
                $listaAux[] = $item;
            }
            //$this->docente_model->borrarEstudianteCalificacion($item['ide_cal']);
        }
        $listaArrastre = $this->docente_model->cargarEstudianteArrastre($periodo, $materia, $seccion, $paralelo);
        foreach ($listaArrastre as $item) {
            //echo $item["ide_cur"].'xxxx'.'</br>';
            if ($this->revisarEstudiante($item["ide_est"], $listaCalificaciones) == false) {
                $listaAux[] = $item;
                //  echo $item["ide_cur"].'yyyy'.'</br>';
            }
        }
        foreach ($listaAux as $item) {
            $data = array("cursa_ide_cur" => $item["ide_cur"]);
            //    echo $item["ide_cur"].'yyyy'.'</br>';
            $this->calificacion_model->crearCalificaciones($data);
        }

        redirect('docente/verListaAlumno/' . $periodo . "/" . $materia . "/" . $seccion . "/" . $paralelo);
    }

    private function revisarEstudiante($id_estudiante, $lista) {

        $band = false;
        foreach ($lista as $item) {
            if ($item["ide_est"] == $id_estudiante) {
                $band = true;
                break;
            }
        }
        return $band;
    }

    private function verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo) {
        $lista = $this->docente_model->verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $band = false;
        //echo $periodo.' '.$materia.' '.$seccion.' '.$paralelo.' --- ';
        foreach ($lista as $item) {
            if (isset($item["primero"]) && isset($item["segundo"]) && ($item["primero"] > 0 && $item["segundo"] > 0)) {
                $band = true;
                break;
            }
        }
        if ($band == false) {
            $listaA = $this->docente_model->verificarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo);
            foreach ($listaA as $item) {
                if (isset($item["primero"]) && isset($item["segundo"]) && ($item["primero"] > 0 && $item["segundo"] > 0)) {
                    $band = true;
                    break;
                }
            }
        }
        return $band;
    }

    private function listaSupletorios($periodo, $materia, $seccion, $paralelo) {
        $data = array();
        $listaEstudiante = $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $listaArrastre = $this->docente_model->sumarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo);
        $lista = $this->utilidades->crearListaEstudiantes($listaEstudiante, $listaArrastre);
        foreach ($lista as $item) {
            //if ($item["total"] < 28 && $item["total"] >= 8 && ($item["asiste"] / 2) >= 74.5) {
            if (($item["total"] >= 15.5 && $item["total"] <= 27.5) && ($item["asiste"] / 2) >= 74.5) {
                $data[] = $item;
            }
        }
        return $data;
    }

    private function listaResumen($periodo, $materia, $seccion, $paralelo) {
        $data = array();
        //$lista = $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $listaEstudiante = $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $listaArrastre = $this->docente_model->sumarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo);
        $lista = $this->utilidades->crearListaEstudiantes($listaEstudiante, $listaArrastre);
        //echo count($lista).'aaa';
        foreach ($lista as $item) {
            $estado = 3;
            $observacion = '';
            if ($item["total"] >= 27.5) {
                $estado = 2;
            } else {
                if ($item["total"] >= 15.5 && $item["total"] <= 27.5) {
                    $observacion = "Supletorio";
                } else if ($item["total"] < 15.5) {
                    $observacion = "Reprobado por no alcanzar la nota maxima";
                    $estado = 9;
                }
            }
            if (($item["asiste"] / 2) < 74.5) {
                $estado = 9; //solo para ver si esta perdido
                $observacion .= ' Reprueba por no alcanzar el número de faltas';
            }

            $item['estado_cur'] = $estado;
            $item['obsevaFinal'] = $observacion;
            $data[] = $item;
        }
        //echo count($data).' xxx ';
        return $data;
    }

    private function listaFinal($periodo, $materia, $seccion, $paralelo) {
        $data = array();
        //$lista = $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $listaEstudiante = $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $listaArrastre = $this->docente_model->sumarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo);
        $lista = $this->utilidades->crearListaEstudiantes($listaEstudiante, $listaArrastre);
        foreach ($lista as $item) {
            $estado = 3;
            $observacion = '';
            if ($item["suple_cal"] == 0) {
                if ($item["total"] >= 27.5) {
                    if (($item["asiste"] / 2) >= 74.5) {
                        $estado = 2;
                    } else {
                        $observacion = 'Repreuba por número de faltas';
                    }
                } else {
                    $observacion = 'Repreuba por no alcanzar la nota maxima';
                }
            } else if ($item["suple_cal"] > 0) {
                $nota1 = $item["total1"];
                $nota2 = $item["total2"];
                $suple = $item["suple_cal"];
                if ($suple > $nota1 && $nota1 <= $nota2) {
                    $observacion = 'Se reemplaza la nota del primer bimestre: ' . $nota1 . ' con la de supletorio: ' . $suple;
                    $nota1 = $suple;
                    $item["total1"] = $nota1;
                } else if ($suple > $nota2 && $nota2 <= $nota1) {
                    $observacion = 'Se reemplaza la nota del segundo bimestre: ' . $nota2 . ' con la de supletorio: ' . $suple;
                    $nota2 = $suple;
                    $item["total2"] = $nota2;
                }
                $total = ($nota1 * 1) + ($nota2 * 1);
                if ($total >= 27.5) {
                    if (($item["asiste"] / 2) >= 74.5) {
                        $estado = 2;
                    } else {
                        $observacion.=' Reprueba por número de faltas';
                    }
                } else {
                    $observacion.=' Reprueba por no alcanzar la nota maxima';
                }
            }
            $item['estado_cur'] = $estado;
            $item['obsevaFinal'] = $observacion;
            $data[] = $item;
        }
        return $data;
    }

    //reportes
    public function reporteNotas($periodo, $materia, $seccion, $paralelo, $tipo) {

        $docente = $this->docente_model->getDatosDocente($this->ion_auth->get_user_idepers());
        $this->load->library('cezpdf');
        $this->load->helper('pdf_helper');
        $pdf = new Cezpdf();

        if ($tipo == 1 || $tipo == 2) {
            $listaCal = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
            $listaArrastreCal = $this->docente_model->cargarEstudiantesCalificacionesArrastre($periodo, $materia, $seccion, $paralelo);
            $listaA = $this->utilidades->crearListaEstudiantes($listaCal, $listaArrastreCal);
            //$listaA = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
            $titulos1 = array("nro" => "Nro", "nomina" => utf8_decode("NÓMINA DE ESTUDIANTES"), "evaluacion" => utf8_decode("EVUALUACIÓN CONTINUA"), "examen" => utf8_decode("EXAMEN BIMESTRAL"), "total" => utf8_decode("TOTAL"), "asistencia" => utf8_decode("ASISTENCIA"), "letras" => utf8_decode("T.LETRAS"));
            $titulo = ($tipo == 1) ? "PRIMER BIMESTRE" : "SEGUNDO BIMESTRE";
        } else if ($tipo == 3) {
            $listaA = $this->listaSupletorios($periodo, $materia, $seccion, $paralelo);
            $titulos1 = array("nro" => "Nro", "nomina" => utf8_decode("NÓMINA DE ESTUDIANTES"), "nota" => utf8_decode("NOTA"), "letras" => utf8_decode("T.LETRAS"), "observa" => utf8_decode("OBSERVACIÓN"));
            $titulo = "REMEDIALES";
        } else if ($tipo == 4) {
            $listaA = $this->listaResumen($periodo, $materia, $seccion, $paralelo);
            $titulos1 = array("nro" => "Nro", "nomina" => utf8_decode("NÓMINA DE ESTUDIANTES"), "nota1" => utf8_decode("NOTA PRIMER BIMESTRE"), "asistencia1" => utf8_decode("ASISTENCIA PRIMER BIMESTRE"), "nota2" => utf8_decode("NOTA SEGUNDO BIMESTRE"), "asistencia2" => utf8_decode("ASISTENCIA SEGUNDO BIMESTRE"), "total" => utf8_decode("TOTAL"), "promedio" => utf8_decode("PROMEDIO ASISTENCIA"), "condicion" => utf8_decode("CONDICIÓN"));
            $titulo = "CUADRO DE RESUMEN";
        }

        $periodo = $this->calificacion_model->obtenerPeriodo($periodo);
        $materia1 = $this->calificacion_model->obtenerMateria($materia);
        $materia = $materia1[0]["nombre_mat"];
        $paralelo = $paralelo;
        $carrera = $materia1[0]["nombre_car"];
        $ciclo = $materia1[0]["nombre_cic"];
        $seccionAux = $this->utilidades->secciones($seccion);
        $seccion = $seccionAux["nombre"];
        $observacion = '';
	$versiesarrastre="";
	if(utf8_decode($paralelo)=='E'){
		$versiesarrastre="Arrastre";
	}
        $pdf = $this->utilidades->encabezadosReportesNotas($pdf, $periodo);
        $pdf->ezText('');
        $titulos = array("1" => "<b>CICLO: </b>" . utf8_decode($ciclo), "2" => "<b>ASIGNATURA: </b>" . utf8_decode($materia));
        $db_data[] = array("1" => "<b>CARRERA: </b>" . utf8_decode($carrera), "2" => utf8_decode("<b>SECCIÓN: </b>" . $seccion));
        $db_data[] = array("1" => "<b>PARALELO: </b>" . utf8_decode($paralelo).' '.$versiesarrastre, "2" => utf8_decode("<b>CATEDRÁTICO: </b>" . $docente[0]["apellido_pers"] . ' ' . $docente[0]["nombre_pers"]));
        $pdf->ezTable($db_data, $titulos, '', array('colGap' => 2, 'shaded' => 1, 'showLines' => 0, 'width' => 500, 'fontSize' => 10, 'shadeCol' => array(1, 1, 1)
        ));

        $db_data1 = array();
        $cont = 1;
        foreach ($listaA as $i => $row) {
            $estadoM = $this->utilidades->verificarEstadoMatricula($row['ide_cur']);
            $arras = $estadoM["A"];
            $retir = $estadoM["R"];
            $estado = ($retir != '') ? $retir : $arras;
            $estado = ($estado != '') ? '(' . $estado . ')' : '';
            //$css = '';
            if ($tipo == 1) {//, "letras" => utf8_decode("T.LETRAS")
                $db_data1[] = array("nro" => $cont, "nomina" => utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers'] . ' ' . $estado), "evaluacion" => $row['evacont1_cal'], "examen" => $row['exam1_cal'], "total" => $row['total1'], "asistencia" => $row['asiste1_cal'] . '%', "letras" => $this->utilidades->numeroLetras($row['total1']));
                $observacion.= ($row['obs1_cal'] != '') ? utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers']) . ' ' . utf8_decode($row['obs1_cal']) . ', ' : "";
            }
            if ($tipo == 2) {
                $db_data1[] = array("nro" => $cont, "nomina" => utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers'] . ' ' . $estado), "evaluacion" => $row['evacont2_cal'], "examen" => $row['exam2_cal'], "total" => $row['total2'], "asistencia" => $row['asiste2_cal'] . '%', "letras" => $this->utilidades->numeroLetras($row['total2']));
                $observacion.=($row['obs2_cal'] != '') ? utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers']) . ' ' . utf8_decode($row['obs2_cal']) . ', ' : "";
            }
            if ($tipo == 3) {
                $db_data1[] = array("nro" => $cont, "nomina" => utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers'] . ' ' . $estado), "nota" => $row['suple_cal'], "letras" => $this->utilidades->numeroLetras($row['suple_cal']), "observa" => $row['obs3_cal']);
                $observacion.=($row['obs3_cal'] != '' && (strtoupper($row['obs3_cal']) !='APROBADO') && (strtoupper($row['obs3_cal']) !='REPROBADO') ) ? utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers']) . ' ' . utf8_decode($row['obs3_cal']) . ', ' : "";
            }
            if ($tipo == 4) {
                if ($row["estado_cur"] == 2) {
                    $a = 'APROBADO';
                } else if ($row["estado_cur"] == 3) {
                    $a = 'SUPLETORIO';
                } else if ($row["estado_cur"] == 9) {
                    $a = 'REPROBADO';
                }
                $db_data1[] = array("nro" => $cont, "nomina" => utf8_decode($row['apellido_pers'] . ' ' . $row['nombre_pers'] . ' ' . $estado), "nota1" => $row['total1'], "asistencia1" => $row['asiste1_cal'], "nota2" => $row['total2'], "asistencia2" => $row['asiste2_cal'], "total" => ($row['total2'] + $row['total1']), "promedio" => round(($row['asiste1_cal'] + $row['asiste2_cal']) / 2), "condicion" => $a);
                //$observacion.=utf8_decode($row['obsevaFinal']);
                $observacion = '';
            }

            //array("nro" => "Nro", "nomina" => utf8_decode("NÓMINA DE ESTUDIANTES"), "nota1" => utf8_decode("NOTA PRIMER BIMESTRE"), "asistencia1" => utf8_decode("ASISTENCIA PRIMER BIMESTRE"), "nota2" => utf8_decode("NOTA SEGUNDO BIMESTRE"), "asistencia2" => utf8_decode("ASISTENCIA SEGUNDO BIMESTRE"), 
            //"total" => utf8_decode("TOTAL"), "promedio" => utf8_decode("PROMEDIO ASISTENCIA"), "condicion" => utf8_decode("CONDICIÓN"));
            $cont++;
        }
        $pdf->ezText('');
        if ($tipo == 1 || $tipo == 2) {
            $pdf->ezTable($db_data1, $titulos1, '<b>' . $titulo . '</b>', array('colGap' => 2, 'shaded' => 1, 'showLines' => 1, 'width' => 500,
                'fontSize' => 8,
                'cols' => array('nro' => array('justification' => 'center', 'width' => '30'),
                    'nomina' => array('justification' => 'full', 'width' => 200),
                    'evaluacion' => array('justification' => 'full', 'width' => 65),
                    'letras' => array('justification' => 'full', 'width' => 65),
                    'examen' => array('justification' => 'full', 'width' => 60))));
        } else if ($tipo == 3) {
            $pdf->ezTable($db_data1, $titulos1, '<b>' . $titulo . '</b>', array('colGap' => 2, 'shaded' => 1, 'showLines' => 1, 'width' => 500,
                'fontSize' => 8,
                'cols' => array('nro' => array('justification' => 'center', 'width' => '30'),
                    'nomina' => array('justification' => 'full', 'width' => 230),
                    'nota' => array('justification' => 'full', 'width' => 75),
                    'observa' => array('justification' => 'full', 'width' => 100))));
        }if ($tipo == 4) {
            $pdf->ezTable($db_data1, $titulos1, '<b>' . $titulo . '</b>', array('colGap' => 2, 'shaded' => 1, 'showLines' => 1, 'width' => 500,
                'fontSize' => 8,
                'cols' => array('nro' => array('justification' => 'center', 'width' => 20),
                    'nomina' => array('justification' => 'full', 'width' => 200),
                    'nota1' => array('justification' => 'full', 'width' => 45),
                    'asistencia1' => array('justification' => 'full', 'width' => 45),
                    'nota2' => array('justification' => 'full', 'width' => 45),
                    'asistencia2' => array('justification' => 'full', 'width' => 45),
                    'total' => array('justification' => 'full', 'width' => 40),
                    'promedio' => array('justification' => 'full', 'width' => 45),
                    'condicion' => array('justification' => 'full', 'width' => 65))));
        }


        $pdf->ezText('');
        $pdf->ezText('');
        $pdf->ezText('');
        $pdf->ezText('');
        //$pdf->ezText('');
        //$pdf->ezText('');
        $observacion = ucwords(strtolower($observacion));
        $pdf->ezText('<b>Observaciones: </b>' . $observacion, 12, array('justification' => 'full'));
        $pdf->ezText('');
        $pdf->ezText('');
        $titulos2 = array("1" => utf8_decode($this->utilidades->fechaEspanolActual()), "2" => utf8_decode($docente[0]["apellido_pers"] . ' ' . $docente[0]["nombre_pers"]));
        $db_data2[] = array("1" => "", "2" => utf8_decode("<b>CATEDRÁTICO</b>"));
        $pdf->ezTable($db_data2, $titulos2, '', array('colGap' => 2, 'shaded' => 1, 'showLines' => 0, 'width' => 500, 'fontSize' => 10, 'xOrientation' => 'center', 'xPos' => 'center'));
        prep_pdf();
        ob_end_clean();
        $pdf->ezStream();
    }

    public function reporteLista($periodo, $materia, $seccion, $paralelo) {
        //$lista = $this->Estudiante_model->listarEstudaintes($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo, $id_materia);
        //$reporte = $this->Estudiante_model->obtenerDocenteMateria($id_periodo, $id_carrera, $id_ciclo, $seccion, $paralelo, $id_materia);
        $docente = $this->docente_model->getDatosDocente($this->ion_auth->get_user_idepers());
        $listaA = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $periodo = $this->calificacion_model->obtenerPeriodo($periodo);
        $materia1 = $this->calificacion_model->obtenerMateria($materia);
        $materia = $materia1[0]["nombre_mat"];
        $paralelo = $paralelo;
        $carrera = $materia1[0]["nombre_car"];
        $ciclo = $materia1[0]["nombre_cic"];
        $seccionAux = $this->utilidades->secciones($seccion);
        $seccion = $seccionAux["nombre"];
        $rector = "Ing. Ana Marcela Cordero Clavijo Mgs.,";
        $secretaria = "Tlga. Carla Sabrina Benítez Torres,";
        $institucion = 'INSTITUTO TECNOLÓGICO SUPERIOR "SUDAMERICANO"';

        //$ciclo = $reporte[0]["descripcion_lec"];
        //$aux = $this->utilidades->secciones($seccion);
        $this->load->library('cezpdf');
        $this->load->helper('pdf_helper');
        $pdf = new Cezpdf('A4', 'landscape');
        $pdf->ezSetMargins(30, 30, 50, 50);

        $pdf->selectFont('fonts/Times-Roman.afm');
        $institucion = 'INSTITUTO TECNOLÓGICO SUPERIOR "SUDAMERICANO"';
        $pdf->ezText(utf8_decode($institucion), 14, array('justification' => 'center'));
        //$pdf->ezText(utf8_decode('LISTADO DE ESTUDIANTE'), 14, array('justification' => 'center'));
        $pdf->ezText(utf8_decode('ASISTENCIA DIARIA DE ESTUDIANTES'), 11, array('justification' => 'center'));
        $pdf->ezText(utf8_decode('PERIODO ACADÉMICO: ' . $periodo[0]["descripcion_lec"]), 11, array('justification' => 'center'));
        $pdf->ezText('');
        $pdf->ezText(utf8_decode('<b>CARRERA: </b>' . $carrera), 11, array('justification' => 'full'));
        $pdf->ezText(utf8_decode('<b>ASIGNATURA: </b>' . $materia), 11, array('justification' => 'full'));
        $pdf->ezText(utf8_decode('<b>CICLO: </b>' . $ciclo . '. <b>SECCIÓN: </b>' . $seccion), 11, array('justification' => 'full'));
        $pdf->ezText(utf8_decode('<b>DOCENTE: </b>' . $docente[0]["apellido_pers"] . ' ' . $docente[0]["nombre_pers"]), 11, array('justification' => 'full'));
        $pdf->ezText('');
        //hay que sacar los datos de la tabla administrativos
        $rector = "Ing. Ana Marcela Cordero Clavijo Mgs.,";
        $secretaria = "Tlga. Carla Sabrina Benítez Torres,";
        $institucion = 'INSTITUTO TECNOLÓGICO SUPERIOR "SUDAMERICANO"';
        $col_names = array(
            'nro' => 'Nro',
            'alumno' => utf8_decode(strtoupper($ciclo . ' de ' . $carrera . ' ' . $periodo[0]["descripcion_lec"])),
            '1' => utf8_decode('  '),
            '2' => utf8_decode('  '),
            '3' => utf8_decode('  '),
            '4' => utf8_decode('  '),
            '5' => utf8_decode('  '),
            '6' => utf8_decode('  '),
            '7' => utf8_decode('  '),
            '8' => utf8_decode('  '),
            '9' => utf8_decode('  '),
            '10' => utf8_decode('  '),
            '11' => utf8_decode('  '),
            '12' => utf8_decode('  '),
            '13' => utf8_decode('  '),
            '14' => utf8_decode('  '),
            '15' => utf8_decode('  '),
            '16' => utf8_decode('  '),
            '17' => utf8_decode('  '),
            '18' => utf8_decode('  '),
            '19' => utf8_decode('  '),
            '20' => utf8_decode('  '),
            '21' => utf8_decode('  '),
            '22' => utf8_decode('  '),
            '23' => utf8_decode('  '),
            '24' => utf8_decode('  '),
            '25' => utf8_decode('  '),
            '26' => utf8_decode('  '),
            '11A' => utf8_decode('THD'),
            '12A' => utf8_decode('THR'),
            '13A' => utf8_decode('TI')
        );
        $db_data[] = array();
        // echo implode('</br>',$_SESSION['referencias']);
        $cont = 0;
        foreach ($listaA as $row) {
            //$referencia=$_SESSION['referencias'][$cont];

            $db_data[$cont] = array('nro' => $cont + 1, 'alumno' => utf8_decode($row["apellido_pers"] . ' ' . $row["nombre_pers"]), '1' => '', '2' => '', '3' => '  ', '4' => '', '5' => '', '6' => '', '7' => '', '8' => '', '9' => '', '10' => '', '11' => '', '12' => '', '13' => ''
                , '14' => '', '15' => '', '16' => '  ', '17' => '', '18' => '', '19' => '', '20' => '', '21' => '', '22' => '', '23' => '', '24' => '', '25' => '', '26' => ''
                , '11A' => '', '12A' => '', '13A' => '');
            $cont++;
        }


        $pdf->ezTable($db_data, $col_names, 'CONTROL DE ASISTENCIA', array('colGap' => 2, 'shaded' => 1, 'showLines' => 1, 'width' => 750, 'fontSize' => 9, 'cols' => array('nro' => array('justification' => 'center', 'width' => '30'), 'alumno' => array('justification' => 'full', 'width' => 190), '11A' => array('justification' => 'full', 'width' => 25), '12A' => array('justification' => 'full', 'width' => 25), '13A' => array('justification' => 'full', 'width' => 25))));
        $pdf->ezText(utf8_decode('THD: Total horas dictadas'), 7, array('justification' => 'full'));
        $pdf->ezText(utf8_decode('THR: Total horas recibidas'), 7, array('justification' => 'full'));
        $pdf->ezText(utf8_decode('TI: Total inasistencias'), 7, array('justification' => 'full'));
        $pdf->ezText('');

        $pdf->ezText(utf8_decode($rector . '                               ' . ucwords($docente[0]["apellido_pers"] . ' ' . $docente[0]["nombre_pers"])), 11, array('justification' => 'center'));
        $pdf->ezText(utf8_decode("RECTORA DEL ITSS" . '                                                         ' . "DOCENTE"), 11, array('justification' => 'center'));
        prep_pdf();
        ob_end_clean();
        $pdf->ezStream();
    }

    public function exportarListadoExcel($periodo, $materia, $seccion, $paralelo) {
        $docente = $this->docente_model->getDatosDocente($this->ion_auth->get_user_idepers());
        
        $listaEstudiante = $this->docente_model->sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo);
        $listaArrastre = $this->docente_model->sumarNotasPrimeroSegundoArrastre($periodo, $materia, $seccion, $paralelo);
        $listaA = $this->utilidades->crearListaEstudiantes($listaEstudiante, $listaArrastre);
        
        //$listaA = $this->docente_model->cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo);
        $periodo = $this->calificacion_model->obtenerPeriodo($periodo);
        $materia1 = $this->calificacion_model->obtenerMateria($materia);
        $materia = $materia1[0]["nombre_mat"];
        $paralelo = $paralelo;
        $carrera = $materia1[0]["nombre_car"];
        $ciclo = $materia1[0]["nombre_cic"];
        $seccionAux = $this->utilidades->secciones($seccion);
        $seccion = $seccionAux["nombre"];
        $rector = "Ing. Ana Marcela Cordero Clavijo Mgs.,";
        $institucion = 'INSTITUTO TECNOLÓGICO SUPERIOR "SUDAMERICANO"';

        $data["docente"] = $docente;
        $data["listaA"] = $listaA;
        $data["periodo"] = $periodo;
        $data["materia"] = $materia;
        $data["paralelo"] = $paralelo;
        $data["carrera"] = $carrera;
        $data["ciclo"] = $ciclo;
        $data["seccion"] = $seccion;
        $data["rector"] = $rector;
        $data["institucion"] = $institucion;
        header("Content-type: application/vnd.ms-excel");
        header("Content-Disposition: filename=\"listado.XLS\";");
        $this->load->view('reportes/frm_exportarListadoEstudianteExcel', $data);
    }

    function listadoDocenteMaterias() {
        $data["lista"] = $this->docente_model->listadoDocentesPeriod();
        header("Content-type: application/vnd.ms-excel");
        header("Content-Disposition: filename=\"listadoDocentesMaterias.XLS\";");
        $this->load->view('otros/listadoDocentesMaterias', $data);
        //$seccionAux = $this->utilidades->secciones($seccion);
    }
    function cerrarNotas($periodo, $materia, $seccion, $paralelo) {
        $this->load->model('cursa_model');
        $lista = $this->listaFinal($periodo, $materia, $seccion, $paralelo);
        //$row["cursa_ide_cur"]
        foreach ($lista as $i => $row) {
            $data = array("estado_cur"=>$row["estado_cur"]);
            $this->cursa_model->actualizarCursaNotas($row["ide_cur"],$data);
        }
        $this->session->set_flashdata('exito', "Se ha enviado el cuadro de calificaciones finales con exito");
        redirect('docente/verListaAlumno/' . $periodo . "/" . $materia . "/" . $seccion . "/" . $paralelo);
    }
}

/* End of file welcome.php */
    /* Location: ./application/controllers/welcome.php */



    
